Mojo (мова програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Mojo
Дата появи 2023
Творці Кріс Латтнерd
Розробник Modulard
Під впливом від Python[1], Rust[2] і C
Звичайні розширення файлів .mojo[3] або .🔥[3]
Вебсайт modular.com/mojo

Mojo — спеціалізована мова програмування, створена компанією Modular[d], орієнтована на розробку у галузі машинного навчання та випущена у травні 2023 року. Mojo позиціонується як просунутіша альтернатива Python, майже повністю сумісна з ним та його бібліотеками, але при цьому показує кращу продуктивність, аналогічну таким мовам програмування як C та C++.

Ключові пріоритети мови: розробка в галузі штучного інтелекту та системне програмування. Мова вміє взаємодіяти з командами SIMD, що дозволяє виконувати кілька операцій алгебри за раз, що позитивно позначається на продуктивності.

Mojo не має збирача сміття, натомість вона використовує семантику переміщення сильно схожу на таку в Rust. Цей підхід дозволяє мові безпечно та швидко видаляти ресурси, що не використовуються, і відмовитися від використання часу виконання[es].

Дизайн та розробка[ред. | ред. код]

Вперше Mojo була анонсована у вересні 2022 року. Тоді ж було заявлено про її розширені можливості компіляції на основі компіляційного фреймворку Багаторівневого Проміжного Подання (англ. Multi-Level Intermediate Representation).

Mojo має гібридну систему типів, що є чимось середнім між статичною та динамічною типізаціями. Завдяки цьому розробник при написанні програми може вибирати між продуктивнішою статичною або гнучкішою динамічною системою типів.

Також Mojo усталено використовує технологію модульного інтерфейсу виведення (англ. Modular Inference Engine), що дозволяє спростити процес розробки та масштабування систем штучного інтелекту.

Сумісність із Python[ред. | ред. код]

Mojo націлена на повну сумісність із екосистемою Project Jupyter. Мова програмування Mojo є новою і, фактично, вона знаходиться все ще в розробці. Наприкінці 2023 року вийшла остання версія — версія 0.6.0. Вона ще не має повної сумісності з кодом Python, а володіє лише певною здатністю обробляти певну частину його синтаксису. Наприклад, у Mojo поки що відсутні іменовані аргументи функцій, ключове слово «global», а також спеціальні вирази для компактного створення списків і словників.

У свою чергу, Mojo має і деякі унікальні синтаксичні засоби, наприклад, низькорівневі функції та структури (англ. struct), оптимізованіші з погляду споживання пам'яті альтернативою класам Python.

Mojo може виконувати наявний Python 3.x, повторно використовуючи середовище виконання CPython. Також у Modular планують[хто?] додати прозору інтеграцію модулів Clang C/C++ та прозору генерацію інтерфейсу зовнішніх функцій між C/C++ та Mojo.

Особливості програмування[ред. | ред. код]

У Mojo функції можна оголошувати як за допомогою fn (для продуктивних функцій), так і за допомогою def (для сумісності з Python).

Основні арифметичні операції в Mojo

fn add(x: Int, y: Int) -> Int:
    return x + y

Спосіб, у який Mojo використовує var і let для оголошення змінних і незмінних величин відповідно, відображає синтаксис, що в певній мірі відповідає Swift. У Swift var використовується для змінних, тоді як let призначено для констант або незмінних величин.

Оголошення змінної величини та використання її в Mojo:

fn main():
    let x = 1
    
    let y: Int
    y = 1

    var z = 0
    z += 1

Розвиток[ред. | ред. код]

Mojo SDK дозволяє програмістам Mojo компілювати та виконувати вихідні файли Mojo локально з командного рядка та наразі підтримує Ubuntu і macOS. Також існує розширенням Mojo для Visual Studio Code, яке забезпечує виконання програмного коду та містить підказки.

Примітки[ред. | ред. код]